package com.guigu.gulimember.controller;


import com.guigu.gulicommon.context.UserContext;
import com.guigu.gulicommon.entity.dto.RegisterByGiteeDto;
import com.guigu.gulicommon.entity.pojo.res.Res;
import com.guigu.gulicommon.entity.vo.UserInfoVo;
import com.guigu.gulimember.service.IUmsMemberService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 会员 前端控制器
 *
 * @author 陈俊杰
 * @since 2024-08-03
 */
@RestController
@RequestMapping("/ums-member")
@Log4j2
public class UmsMemberController {
    @Autowired
    private IUmsMemberService memberService;

    /**
     * 通过Gitee注册会员
     *
     * @param dto 注册信息
     * @return 会员信息
     */
    @PostMapping("/registerByGitee")
    public Res<UserInfoVo> registerByGitee(@RequestBody RegisterByGiteeDto dto) {
        log.info("gitee注册会员信息入参为：{}", dto);
        return memberService.registerByGitee(dto);
    }

    /**
     * 根据用户名和密码获取会员信息
     *
     * @param userName 用户名
     * @param password 密码
     * @return 会员信息
     */
    @GetMapping("/getUserByUserNameAndPassword")
    public Res<UserInfoVo> getUserByUserNameAndPassword(String userName, String password) {
        log.info("当前线程id为:{}", UserContext.getInstance().getCurrentUser());
        log.info("根据用户名和密码获取会员信息入参为：userName={},password={}", userName, password);
        return memberService.getUserByUserNameAndPassword(userName, password);
    }

    /**
     * 根据用户名查询会员是否存在
     *
     * @param userName 用户名
     * @return 会员存在状态
     */
    @GetMapping("/existsByUserName")
    public Res<UserInfoVo> existsByUserName(String userName) {
        log.info("根据用户名查询会员是否存在入参为:{}", userName);
        return memberService.existsByUserName(userName);
    }

    /**
     * 根据Id查询会员信息
     *
     * @return 会员信息
     */
    @GetMapping("/info")
    public Res<UserInfoVo> getById() {
        return memberService.getInfoById();
    }
}
